/*
 * Copyright 2011 derek.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
package com.aocore.item;

/**
 *
 * @author derek
 */
public enum ItemContainer
{
    Unspecified(0),

    Inventory(2),
    TraderOffer(4),
    ForTrade(6),
    Cube(8),
    Stash(0x0A),

    // Not a buffer... flagged with 0x20 if (action == PutInBelt || RemoveFromBelt)
    Belt(0x20),
    // Not a buffer... if (buffer == Equipement && destination == Item)
    Item(0x40),

    //NPC buffers are flagged with 0x80 so they are different
    ArmorTab(0x82),
    WeaponTab1(0x84),
    WeaponTab2(0x86),
    MiscTab(0x88);
    //ArmorTabBottom = 0x83, // Buffer merged with ArmorTab
    //WeaponTab1Bottom = 0x85, // Buffer merged with WeaponTab1
    //MiscTabBottom = 0x89, // Buffer merged with WeaponTab2

    private final int id;

    private ItemContainer(int id)
    {
        this.id = id;
    }

    public int getId()
    {
        return id;
    }

    public static ItemContainer valueOf(int id) throws IllegalArgumentException
    {
        for (ItemContainer itemContainer : values())
        {
            if (itemContainer.getId() == id)
            {
                return itemContainer;
            }
        }

        throw new IllegalArgumentException(id + " is not a valid ItemContainer");
    }
}
